Some of the routine tasks that accompany ownership or use of a personal computer include installing and upgrading software, determining the types of software already installed and enabled on a given computer system, removing old or unused software, and ascertaining the reasons that certain software features are non-functional. Given the regularity and importance of these tasks in everyday computer operation, a typical computer user desires an operating system that provides an easily understandable and manageable means for setting up and maintaining a computer working environment. However, because ever-growing complexities in new software products have far out-paced advances in available system configuration tools, the user experience currently associated with the above described tasks may be less than desirable. Some existing system management techniques confront the user with an error-prone environment that is virtually unmanageable, absent expert assistance. Furthermore, the present lack of a consistent, coherent approach to cataloging and maintaining the various elements that make up an operating environment often results in inconsistent system behavior, significant system performance degradation, and inefficient use of hardware resources. Unchecked, this situation will worsen as more sophisticated software products are released. This can lead, in turn, to additional user frustration and increased requirements for customer support.
For purposes of better understanding the problems associated with prior art configuration management tools, it is instructive to consider the basic structural layout of a typical computer operating system. In any such operating system, there exists a collection of program code and associated data representing the presently active system software. Such code and data are typically stored on a disk in some form of system file or system file directory. Traditional system administration has meant the direct manipulation of the contents of such system file(s). However, as the complexity and versatility of system and application software has increased over time, the number of items that must be managed has grown to an unwieldy level. Further complicating matters is the fact that many software components depend, either completely or partially, upon some portion of system file content. For example, when some application programs are launched, they scan the content of the system files searching for data or software code which might be required for either basic or enhanced operation. As a result, removal or alteration of system file content by the user can cause latent problems in seemingly unrelated software processes. The typical system user therefore ends up treating the system files as a mysterious and impenetrable "black box" from which nothing can be removed.
Such a situation is extremely problematic, as users routinely wish to add to, delete from, and otherwise modify operating system functionality. For example, a user may wish to upgrade an existing word processing application by installing a spell checker that was not originally installed due to an earlier-existing, but now alleviated, disk space constraint. Another user may wish to add a new font or remove an obsolete printer driver. Yet another user might wish to disable certain operating system functionality without fear that other aspects of the environment will be adversely affected. Given conventional configuration management tools, however, such users cannot readily execute these modest tasks. This is due to the fact that the prior art tools provide no means by which a user can easily ascertain the interdependencies that many times exist between system components, and hence the user is not presented with a coherent, easily graspable view of the prevailing overall configuration. In sum, there is a very real need for a computer operating system in which environment configuration and management is efficient, consistent, easy to understand, and aligned more closely with typical user expectations associated with buying, installing, and using personal computing software.